package com.snack.shop.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Map;

/**
 * 结算服务接口
 */
public interface SettlementService {

    /**
     * 申请结算
     * @param orderId 订单ID
     * @param userId 用户ID
     * @param paymentMethod 收款方式
     * @param paymentAccount 收款账号/收款人姓名
     * @param paymentQrCode 收款码URL
     * @param paymentPhone 联系电话
     * @param remark 备注
     */
    void applySettlement(Long orderId, Long userId, String paymentMethod, String paymentAccount, String paymentQrCode, String paymentPhone, String remark);

    /**
     * 获取收益统计
     * @param userId 用户ID
     * @return 统计数据
     */
    Map<String, Object> getStatistics(Long userId);

    /**
     * 获取结算记录
     * @param userId 用户ID
     * @param settlementStatus 结算状态（可选）
     * @param current 当前页
     * @param size 每页大小
     * @return 结算记录列表
     */
    Page<Map<String, Object>> getRecords(Long userId, Integer settlementStatus, Integer current, Integer size);

    /**
     * 获取结算信息（商家查看）
     * @param orderId 订单ID
     * @return 结算详细信息
     */
    Map<String, Object> getSettlementInfo(Long orderId);

    /**
     * 商家确认结算
     * @param orderId 订单ID
     */
    void settleOrder(Long orderId);

    /**
     * 审核结算（管理员）
     * @param orderId 订单ID
     * @param approved 是否通过
     * @param remark 备注
     */
    void approveSettlement(Long orderId, Boolean approved, String remark);

    /**
     * 获取待审核结算列表（管理员）
     * @param current 当前页
     * @param size 每页大小
     * @return 待审核列表
     */
    Page<Map<String, Object>> getPendingList(Integer current, Integer size);
}

